package hyy_2022;

/**
 * 位1的个数
 */
public class _0823_191_HammingWeight {

    /**
     * n & (n-1) : 6(110) & 5(101) = 4(100)
     * 把n的二进制中的最低位1变为0
     * 不断将n与n-1进行&运算,直至n为0
     * @param n
     * @return 1的个数
     */
    public int hammingWeight(int n) {
        int ret = 0;
        while(n != 0) {
            n &= (n-1);
            ret ++;
        }
        return ret;
    }
}
